// 支付任务

let config = require("./modules/config.js");
let utils = require("./modules/utils.js");
let system = require("./modules/system.js");


module.exports = {
    // 判断任务失败
    payment_task(items) {
        // 主循环
        for (var i = 0; i < items.length; i++) {
            var order_num = items[i].order_num;
            var task_id = items[i].task_id;
            // 复制一下内容；防止识别链接
            setClip(order_num)
            // 打开抖音
            app.launchApp(config.targetAppName);
            // 等待加载
            sleep(3000);
            //  返回至抖音首页；
            utils.ReturnDYHome()
            sleep(2000); // 等待加载
            system.Log("开始执行第 " + (i + 1) + "/" + items.length + " 条: ");

            var jc1 = utils.forceFindControl({
                functionName: textMatches,
                text: /.*(操作过于频繁|访问被拒绝).*/,

                awaitTime: 5000
            });
            if (jc1) {
                utils.forceFindControl({
                    functionName: text,
                    text: "确定",
                    click: true,
                    awaitTime: 3000
                });
                sleep(100);
                click(config.my_order_pos.x,config.my_order_pos.y)
                var jc2 = utils.forceFindControl({
                    functionName: textMatches,
                    text: /.*(操作过于频繁|访问被拒绝).*/,

                    awaitTime: 5000
                });
                if (jc2) {
                    utils.forceFindControl({
                        functionName: text,
                        text: "确定",
                        click: true,
                        awaitTime: 3000
                    });
                }
            } else {
                // 支付控件，模糊匹配
                var pay_crl = utils.forceFindControl({
                    functionName: textMatches,
                    text: ".*我的订单.*",
                    excludeClassNames: ["ViewGroup"]
                })
                if (!utils.fail_callback(pay_crl, task_id, config.updatePayTaskStatus() + `?task_no=${task_id}&status=-1`)) {
                    continue;
                }
                system.Log("找到 '我的订单'，尝试点击");
            }


            // 点击后等待
            sleep(2000);

            var search_crl = utils.forceFindControl({functionName: text, text: "搜索订单"})
            if (!utils.fail_callback(search_crl, task_id, config.updatePayTaskStatus() + `?task_no=${task_id}&status=-1`)) {
                continue;
            }

            // 搜索订单
            var flag = utils.searchOrder(order_num)
            if (!utils.fail_callback(flag, task_id, config.updatePayTaskStatus() + `?task_no=${task_id}&status=-1`)) {
                continue;
            }
            system.Log("搜索到订单");
            sleep(3000)
            var go_pay_crl = utils.forceFindControl({
                functionName: textMatches,
                text: ".*去支付.*",
                click: true,
                sleepTime: 100,
                awaitTime: 10000,
                is_loop: true,
                content_click: true
            })
            // var _pay_crl = utils.forceFindControl(textMatches, ".*需付款.*") // 这个是识别0.01价格的
            if (!utils.fail_callback(go_pay_crl, task_id, config.updatePayTaskStatus() + `?task_no=${task_id}&status=-1`)) {
                continue;
            }
            system.Log("找到 '需付款'，尝试点击");
            var pay_type_crl = utils.forceFindControl({functionName: text, text: config.pay_type})
            if (!pay_type_crl) {
                var flag_pay_type = false;
                // 滑动并且切换支付类型（目前看着不需要，后面需要再加；下面这段只是下滑的示例，需要找到下滑那个控件才行。）
                utils.swipeInWidget(textMatches(/支付宝|抖音支付|抖音月付|找亲友帮忙付/).findOne(5000), 0.5, 0.9, 0.5, 0.5, 500);
                utils.forceFindControl({functionName: desc, text: config.pay_type, click: true, awaitTime: 5000})
                for (var j = 0; j < 3; j++) {
                    var pay_type_crl2 = utils.forceFindControl({functionName: text, text: config.pay_type})
                    if (pay_type_crl2) {
                        flag_pay_type = true;
                        break
                    }
                    utils.swipeInWidget(textMatches(/支付宝|抖音支付|抖音月付|找亲友帮忙付/).findOne(5000), 0.5, 0.9, 0.5, 0.5, 500);

                }
                if (!flag_pay_type) {
                    utils.fail_callback(pay_type_crl, task_id, config.updatePayTaskStatus() + `?task_no=${task_id}&status=-1`)
                    continue;
                }
            }
            system.Log("找到支付类型：" + config.pay_type);
            sleep(3000);
            var qr_pay_crl = utils.forceFindControl({functionName: text, text: "确认支付"})
            if (!utils.fail_callback(qr_pay_crl, task_id, config.updatePayTaskStatus() + `?task_no=${task_id}&status=-1`)) {
                continue;
            }
            if (config.pay_type === "支付宝") {
                //* 这个是余额宝支付测试
                var yeb_pay_crl = utils.forceFindControl({functionName: text, text: config.zfb_pay_subtype})
                if (!utils.fail_callback(yeb_pay_crl, task_id, config.updatePayTaskStatus() + `?task_no=${task_id}&status=-1`)) {
                    continue;
                }
                system.Log("找到 '余额宝'，尝试点击");
                sleep(2000);
                // 这个确实支付宝付款支付有时候不需要点，有时候点余额宝支付就直接跳支付了
                utils.forceFindControl({functionName: text, text: "确认付款", click: true, awaitTime: 4000})
                var pay_password_crl = utils.forceFindControl({functionName: text, text: "请输入支付密码"})

                if (!utils.fail_callback(pay_password_crl, task_id, config.updatePayTaskStatus() + `?task_no=${task_id}&status=-1`)) {
                    continue;
                }
                sleep(200);
                system.Log("找到 '请输入支付密码'，尝试输入密码");
                var pay_flag = utils.input_zfb_password(config.pay_password)
                if (!utils.fail_callback(pay_flag, task_id, config.updatePayTaskStatus() + `?task_no=${task_id}&status=-1`)) {
                    continue;
                }
                // 还需要看看有那个‘支付完成’控件出现，才能代表已经下单完成
                var pay_cg_crl = utils.forceFindControl({functionName: text, text: "支付成功", click: false})
                if (!utils.fail_callback(pay_cg_crl, task_id, config.updatePayTaskStatus() + `?task_no=${task_id}&status=-1`)) {
                    continue;
                }
                sleep(600);
                app.launchApp("AutoJs6");
                // 走到这里就是下单成功了
                utils.httpRequest(config.updatePayTaskStatus() + `?task_no=${task_id}&status=3`, {
                    method: "GET"
                });
                app.launchApp(config.targetAppName);
                // 余额宝测试完成*

            } else if (config.pay_type === "微信支付") {
                // 微信支付
            }


            // 返回抖音主页
            sleep(700);
            utils.goBackground()
            // 这里上线后调大一点，让休息久一点
            // sleep(4000);
            sleep(random(5000, 7000));
            // sleep(random(10000, 15000));
        }
        system.Log("全部任务执行完成！");

    }
}

